home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2008 February / PCWFEB08.iso / Software / Freeware / Miro 1.0 / Miro_Installer.exe / Miro_Downloader.exe / encodings / utf_16.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2007-11-12  |  4.2 KB  |  119 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. """ Python 'utf-16' Codec
  5.  
  6.  
  7. Written by Marc-Andre Lemburg (mal@lemburg.com).
  8.  
  9. (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
  10.  
  11. """
  12. import codecs
  13. import sys
  14. encode = codecs.utf_16_encode
  15.  
  16. def decode(input, errors = 'strict'):
  17.     return codecs.utf_16_decode(input, errors, True)
  18.  
  19.  
  20. class IncrementalEncoder(codecs.IncrementalEncoder):
  21.     
  22.     def __init__(self, errors = 'strict'):
  23.         codecs.IncrementalEncoder.__init__(self, errors)
  24.         self.encoder = None
  25.  
  26.     
  27.     def encode(self, input, final = False):
  28.         if self.encoder is None:
  29.             result = codecs.utf_16_encode(input, self.errors)[0]
  30.             if sys.byteorder == 'little':
  31.                 self.encoder = codecs.utf_16_le_encode
  32.             else:
  33.                 self.encoder = codecs.utf_16_be_encode
  34.             return result
  35.         
  36.         return self.encoder(input, self.errors)[0]
  37.  
  38.     
  39.     def reset(self):
  40.         codecs.IncrementalEncoder.reset(self)
  41.         self.encoder = None
  42.  
  43.  
  44.  
  45. class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
  46.     
  47.     def __init__(self, errors = 'strict'):
  48.         codecs.BufferedIncrementalDecoder.__init__(self, errors)
  49.         self.decoder = None
  50.  
  51.     
  52.     def _buffer_decode(self, input, errors, final):
  53.         if self.decoder is None:
  54.             (output, consumed, byteorder) = codecs.utf_16_ex_decode(input, errors, 0, final)
  55.             if byteorder == -1:
  56.                 self.decoder = codecs.utf_16_le_decode
  57.             elif byteorder == 1:
  58.                 self.decoder = codecs.utf_16_be_decode
  59.             elif consumed >= 2:
  60.                 raise UnicodeError('UTF-16 stream does not start with BOM')
  61.             
  62.             return (output, consumed)
  63.         
  64.         return self.decoder(input, self.errors, final)
  65.  
  66.     
  67.     def reset(self):
  68.         codecs.BufferedIncrementalDecoder.reset(self)
  69.         self.decoder = None
  70.  
  71.  
  72.  
  73. class StreamWriter(codecs.StreamWriter):
  74.     
  75.     def __init__(self, stream, errors = 'strict'):
  76.         self.bom_written = False
  77.         codecs.StreamWriter.__init__(self, stream, errors)
  78.  
  79.     
  80.     def encode(self, input, errors = 'strict'):
  81.         self.bom_written = True
  82.         result = codecs.utf_16_encode(input, errors)
  83.         if sys.byteorder == 'little':
  84.             self.encode = codecs.utf_16_le_encode
  85.         else:
  86.             self.encode = codecs.utf_16_be_encode
  87.         return result
  88.  
  89.  
  90.  
  91. class StreamReader(codecs.StreamReader):
  92.     
  93.     def reset(self):
  94.         codecs.StreamReader.reset(self)
  95.         
  96.         try:
  97.             del self.decode
  98.         except AttributeError:
  99.             pass
  100.  
  101.  
  102.     
  103.     def decode(self, input, errors = 'strict'):
  104.         (object, consumed, byteorder) = codecs.utf_16_ex_decode(input, errors, 0, False)
  105.         if byteorder == -1:
  106.             self.decode = codecs.utf_16_le_decode
  107.         elif byteorder == 1:
  108.             self.decode = codecs.utf_16_be_decode
  109.         elif consumed >= 2:
  110.             raise UnicodeError, 'UTF-16 stream does not start with BOM'
  111.         
  112.         return (object, consumed)
  113.  
  114.  
  115.  
  116. def getregentry():
  117.     return codecs.CodecInfo(name = 'utf-16', encode = encode, decode = decode, incrementalencoder = IncrementalEncoder, incrementaldecoder = IncrementalDecoder, streamreader = StreamReader, streamwriter = StreamWriter)
  118.  
  119.